所谓的临界区：是指进程中的一段需要访问共享资源并且当另一个进程处于相应代码区域时便不会被执行的代码区域
对于临界区的管理的必须要满足一下的四个要求：
互斥：同一时间临界区中最多存在一个线程
Progress：如是一个线程想要进入临界区，那么它最终会成功
有限等待：如果一个线程i处于入口区，那么在i的请求被接受之前，其他线程进入临界区的时间是有限制的。
无忙等待(可选)：如果一个进程在等待进入临界区，那么在它可以进入之前会被挂起。
解决方案
①：禁用硬件中断
缺点：一旦中断被禁用，线程就无法被停止，整个系统都会为你停下来。可能导致其他线程处于饥饿状态。
②：基于软件的解决方法
③：更高级的抽象

案例分析：假设有甲乙两个人共用一个冰箱里的面包，如果那个人发现冰箱里没有面包后就去购买面包。如果保证冰箱里的面包不会多也不会少。


1.不存在有关的额进程相对推进的速度，系统内多个CPU的假定
2.一次最多只能有一个进程进入临界区，就是不能两个进行还能同时在临界区内。
3.不能让一个进程在临界区内无线的循环下去
4.等待进入临界区的程序，不能无限等待。